Consulta de Guías Docentes



Academic Year/course: 2023/24

30218 - Programming Theory


Syllabus Information

Academic year:
2023/24
Subject:
30218 - Programming Theory
Faculty / School:
110 - Escuela de Ingeniería y Arquitectura
326 - Escuela Universitaria Politécnica de Teruel
Degree:
439 - Bachelor's Degree in Informatics Engineering
443 - Bachelor's Degree in Informatics Engineering
ECTS:
6.0
Year:
2
Semester:
Second semester
Subject type:
Compulsory
Module:
---

1. General information

 

The objective of this subject is for the student to consolidate the programming knowledge acquired in previous courses and to learn more advanced concepts that appear in the main programming paradigms.

Object Oriented Programming will be studied, starting from the theoretical concepts involved and a set of problems present in current software development, extending the programming techniques acquired in previous subjects.

Functional Programming will be presented within a new theoretical framework for the student, introducing its basic techniques.

These approaches and objectives are aligned with the Sustainable Development Goals (SDGs) of the United Nations Agenda 2030 (https://www.un.org/sustainabledevelopment/es/), insofar as the acquisition of the learning results of the subject provides training and competence to contribute to their achievement, by building more energy efficient software and improving the technological capacity of industrial sectors (in particular, goals 7.3, 8.2, 9.5 and 9.c).



2. Learning results

 

Upon completion of the subject, the student will be able to:

  • R12. Develop object-oriented programs that incorporate graphical user interfaces, manage events or can access databases and distributed network resources.

  • R13. Know and understand the syntax and semantics of a functional programming language.

  • R14. Develop programs written in a functional language.

  • R15. Have a perspective of other programming paradigms and languages.

Must know the basic algorithmic procedures of computer technologies to design and implement solutions to problems, analyzing the appropriateness and complexity of the proposed algorithms, in a robust and efficient, choosing the most appropriate paradigm and programming languages, and apply these techniques to software development.

The knowledge acquired complements and extends what has already been learned in previous subjects of the programming block, and will provide the student with a global perspective of the programming technologies and their use in different contexts.

 

3. Syllabus

 

Block 1. Object Oriented Programming

  • Classes

  • Polymorphism and Inheritance

  • Generic Programming

  • Class hierarchies and genericity

  • Containers and Data Structures

  • Robust application design

  • Type inference

  • Design patterns

  • Access to network resources

 

Block 2: Functional Programming

  • Introduction to Functional Programming

  • Functional languages: basic types

  • Expressions and Functions: recursion

  • Lists and higher-order functions

  • Algebraic types and classes

  • Functional programming in object-oriented languages

 

Block 3. Other paradigms

  • Logical Paradigm

  • Dynamic languages



4. Academic activities

 

The student's dedication to achieve the learning results in this subject is estimated in 150 hours, distributed as follows:

  • 60h of face-to-face activities (lectures, problems and practicals)

  • 25h of team programming work

  • 60h of individual personal work

  •  5h of theory and practical final exams

 

Face-to-face activities are organized as follows:

  • Theoretical classes: 30h (2 hours per week)

  • Problem solving and case studies: 15h (1 hour per week)

  • Practical laboratory classes: 15h (2-hour sessions, one session every two weeks)

They can be done in groups of a maximum of 2 people.

 

Individual student personal work activities may include:

  • The resolution of certain exercises that are proposed as work prior to the problem sessions.

  • A major final programming project to be carried out in a team with other students.

 

5. Assessment system

 

The student must demonstrate that they have achieved the intended learning results through the following assessment activities:

  • Final theory test: written exam in which the student must solve programming exercises and, if necessary, answer conceptual questions conceptual questions.
  • Assessment of the practical activities carried out during the term: 
    • Laboratory practices, programming project and resolution of proposed exercises: with the practical programming works, the student's work and learning progress will be monitored.
      Students who have met the deadlines and have demonstrated an adequate level of achievement and quality will be exempted from the practical programming exam.
    • Practical programming exam: individual exam in which the student will have to solve programming exercises similar to those done in the practical or problem sessions. Students who do not pass the assessment of the practical part of the subject within the deadlines specified throughout the term will have to take this exam Students who are exempted from taking this exam and choose to take it, will waive the grade already obtained with the delivery of their practical work.

 

The weighting of the assessment activities is as follows:

  Theory exam Practical activities
School of Engineering and Architecture, Ebro River Campus 60% 40%
Polytechnic University School, Teruel Campus 40% 60%

 

It is necessary to pass the theory exam with a minimum grade of 5.0 points to pass the subject. In this case, the student's final grade in the subject is obtained as the weighted sum of the grades of the theoretical and practical parts with their corresponding weights . If the grade in the theory exam is lower than 5.0, the grade in the course will be the grade obtained in that exam.

 


Curso Académico: 2023/24

30218 - Tecnología de programación


Información del Plan Docente

Año académico:
2023/24
Asignatura:
30218 - Tecnología de programación
Centro académico:
110 - Escuela de Ingeniería y Arquitectura
326 - Escuela Universitaria Politécnica de Teruel
Titulación:
439 - Graduado en Ingeniería Informática
443 - Graduado en Ingeniería Informática
Créditos:
6.0
Curso:
2
Periodo de impartición:
Segundo semestre
Clase de asignatura:
Obligatoria
Materia:
---

1. Información básica de la asignatura

Esta asignatura tiene como objetivo que el estudiante consolide los conocimientos de programación adquiridos en asignaturas anteriores y aprenda conceptos más avanzados que aparecen en los principales paradigmas de programación.

Se estudiará la Programación Orientada a Objetos, a partir de los conceptos teóricos implicados y de un conjunto de problemas presentes en el desarrollo actual de software, ampliando las técnicas de programación adquiridas en asignaturas anteriores.
Se presentará la Programación Funcional, dentro de un marco teórico nuevo para el estudiante, introduciendo sus técnicas básicas.

Estos planteamientos y objetivos están alineados con los Objetivos de Desarrollo Sostenible (ODS) de la Agenda 2030 de Naciones Unidas (https://www.un.org/sustainabledevelopment/es/), en la medida en que la adquisición de los resultados de aprendizaje de la asignatura proporciona capacitación y competencia para contribuir a su logro, mediante la construcción de software más eficiente energéticamente y la mejora de la capacidad tecnológica de los sectores industriales (en particular, los objetivos 7.3, 8.2, 9.5 y 9.c).

2. Resultados de aprendizaje

Al superar la asignatura, el estudiante será competente para:
  • R12. Desarrollar programas orientados a objetos que incorporen interfaces gráficas de usuario, gestione eventos o puedan acceder a bases de batos y a recursos distribuidos en la red.
  • R13. Conocer y comprender la sintaxis y la semántica de un lenguaje de programación funcional.
  • R14. Desarrollar programas escritos en un lenguaje funcional.
  • R15. Tener una perspectiva de otros paradigmas y lenguajes de programación.

Debe conocer los procedimientos algorítmicos básicos de las tecnologías informáticas para diseñar e implementar soluciones a problemas, analizando la idoneidad y complejidad de los algoritmos propuestos, de forma robusta, segura y eficiente, eligiendo el paradigma y los lenguajes de programación más adecuados, y aplicar esas técnicas al desarrollo de software.

Los conocimientos adquiridos complementan y amplían lo ya aprendido en asignaturas anteriores del bloque de programación, y dotarán al estudiante de una perspectiva global de las tecnologías de programación y su aplicación a distintos contextos.

3. Programa de la asignatura

Bloque 1: Programación Orientada a Objetos

  • Clases
  • Polimorfismo y Herencia
  • Programación Genérica
  • Jerarquías de clases y genericidad
  • Contenedores y Estructuras de Datos
  • Diseño de aplicaciones robustas
  • Inferencia de tipos
  • Patrones de diseño
  • Acceso a recursos en red

Bloque 2: Programación Funcional

  • Introducción a la Programación Funcional
  • Lenguajes funcionales: tipos básicos
  • Expresiones y Funciones: recursividad
  • Listas y funciones de orden superior
  • Tipos algebraicos y clases
  • Programación funcional en lenguajes orientados a objetos

Bloque 3: Otros paradigmas

  • Paradigma Lógico
  • Lenguajes dinámicos

4. Actividades académicas

La dedicación del estudiante para alcanzar los resultados de aprendizaje en esta asignatura se estima en 150 horas, distribuidas del siguiente modo:

  • 60h de actividades presenciales (clases magistrales, de problemas y prácticas)
  • 25h de trabajo de programación en equipo
  • 60h de trabajo personal individual
  •   5h de examen final de teoría y de prácticas

Las actividades presenciales se organizan de la siguiente forma:

  • Clases teóricas: 30h (2 horas semanales)
  • Resolución de problemas y casos: 15h (1 hora semanal)
  • Clases prácticas de laboratorio: 15h (sesiones de 2 horas, una sesión cada dos semanas)
    Pueden realizarse en grupos de un máximo de 2 personas.

Las actividades de trabajo personal individual del estudiante pueden incluir:

  • La resolución de determinados ejercicios que se propongan como trabajo previo a las sesiones de problemas.
  • Un proyecto final de programación de mayor entidad a realizar en equipo con otros estudiantes.

5. Sistema de evaluación

El estudiante deberá demostrar que ha alcanzado los resultados de aprendizaje previstos mediante las siguientes actividades de evaluación:

  • Prueba final de teoría: examen escrito en el que el estudiante deberá resolver ejercicios de programación y, en su caso, responder preguntas conceptuales.
  • Evaluación de las actividades prácticas realizadas durante el curso:
    • Prácticas de laboratorio, proyecto de programación y resolución de ejercicios propuestos: con los trabajos prácticos de programación se realizará un seguimiento del trabajo del estudiante y del progreso de su aprendizaje.
      Los estudiantes que hayan cumplido con los plazos de entrega, y hayan demostrado en ellos un nivel de aprovechamiento y calidad adecuados, estarán exentos de la realización del examen práctico de programación.
    • Examen práctico de programación: examen individual en el que el estudiante deberá resolver ejercicios de programación similares a los realizados en las prácticas o sesiones de problemas. Deberán realizar este examen aquellos estudiantes que no superen la evaluación de la parte práctica de la asignatura en los plazos especificados a lo largo del curso. Los estudiantes que resulten exentos de la realización de este examen y opten por presentarse al mismo, renunciarán a la nota ya obtenida con la entrega de sus trabajos prácticos.

La ponderación de las actividades de evaluación es la siguiente:

  Examen de teoría Actividades prácticas
Escuela de Ingeniería y Arquitectura, Campus Río Ebro 60% 40%
Escuela Universitaria Politécnica, Campus de Teruel 40% 60%

Es necesario superar el examen de teoría con una calificación mínima de 5.0 puntos para aprobar la asignatura. En ese caso, la calificación final del estudiante en la asignatura se obtiene como suma ponderada de las calificaciones de las partes teórica y práctica con sus pesos correspondientes. Si la calificación en el examen de teoría es inferior a 5.0, la calificación en la asignatura será la obtenida en dicho examen.